/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2001 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.modules.corba.idl.src;
import java.beans.*;
import java.io.*;
import java.util.StringTokenizer;
import java.util.Vector;
//import org.openide.nodes.Node;
import org.openide.cookies.OpenCookie;
import org.netbeans.modules.corba.IDLDataObject;
/*
* @author Karel Gardas
*/
public class IDLElement extends SimpleNode
implements Serializable, OpenCookie {
//public static final boolean DEBUG = true;
public static final boolean DEBUG = false;
private String name;
private int line;
private int column;
/**
* @associates Node
*/
private Vector members;
private IDLElement parent;
private IDLDataObject ido;
public IDLElement (int i) {
super (i);
members = new Vector ();
name = "";
}
public IDLElement (IDLParser p, int i) {
super (p, i);
members = new Vector ();
name = "";
}
public void setDataObject (IDLDataObject val) {
if (DEBUG)
System.out.println ("IDLElement ``" + getName () + " '' ::setDataObject (val)");
ido = val;
setDataObjectForMembers (val);
}
public void setDataObjectForMembers (IDLDataObject val) {
for (int i=0; i<getMembers ().size (); i++) {
((IDLElement)getMember (i)).setDataObject (val);
}
}
public IDLDataObject getDataObject () {
return ido;
}
public void setLine (int i) {
if (DEBUG)
System.out.println ("set line for " + getName () + " : " + i);
line = i;
//getLine (); // debug check
}
public int getLine () {
if (DEBUG)
System.out.println ("get line for " + getName () + " : " + line);
return line;
}
public void setColumn (int i) {
if (DEBUG)
System.out.println ("set column for " + getName () + " : " + i);
column = i;
//getColumn (); // debug check
}
public int getColumn () {
if (DEBUG)
System.out.println ("get column for " + getName () + " : " + column);
return column;
}
public void setName (String v) {
if (DEBUG)
System.out.println ("setName: " + v);
name = v;
}
public String getName () {
if (DEBUG)
System.out.println ("getName: " + name);
return name;
}
public void addMember (Node x) {
members.addElement (x);
}
public Vector getMembers () {
return members;
}
/*
public Object getMember (int i) {
return members.elementAt (i);
}
*/
public IDLElement getMember (int i) {
return (IDLElement)members.elementAt (i);
}
public void setParent (IDLElement e) {
parent = e;
}
public IDLElement getParent () {
return parent;
}
public void open () {
if (DEBUG)
System.out.println ("open action :-))");
}
public String deepToString (IDLElement element) {
if (DEBUG)
System.out.println ("IDLElement::deepToString (" + element + ");");
// for tests
//return element.getName ();
String names = element.getName () + ":" + element.getLine () + ":"
+ element.getColumn () + ":" + "(";
Vector members = element.getMembers ();
for (int i=0; i<members.size (); i++) {
IDLElement tmp = (IDLElement)members.elementAt (i);
//names = names + " " + tmp.getName () + " (" + deepToString (tmp) + ")";
names = names + tmp.getName () + ":" + tmp.getLine () + ":" + tmp.getColumn () + ":"
+ " (" + deepToString (tmp) + ")";
//names = names + " " + tmp.getName ();
}
if (DEBUG)
System.out.println ("-> " + names);
return names + ")";
}
public boolean equals (Object obj) {
IDLElement element;
if (!(obj instanceof IDLElement)) {
if (DEBUG) {
System.out.println (this.getName () + "::equals (" + obj + ");");
System.out.println ("isn't IDLElement");
}
return false;
} else {
element = (IDLElement)obj;
}
if (DEBUG)
System.out.println (this.getName () + "::equals (" + ((IDLElement)element).getName ()
+ ");");
if (element.className ().equals (className ())) {
IDLElement tmp_element = (IDLElement)element;
String this_names = deepToString (this);
String object_names = deepToString ((IDLElement)element);
if (this_names.equals (object_names)) {
if (DEBUG)
System.out.println ("return true;");
return true;
}
}
if (DEBUG)
System.out.println ("return false;");
return false;
}
public String className () {
String tmp = this.getClass ().getName ();
return tmp.substring (tmp.lastIndexOf (".") + 1, tmp.length ());
}
public int hashCode () {
String name = className () + deepToString (this);
int code = name.hashCode ();
if (DEBUG)
System.out.println ("IDLElement::hashCode () : " + name + " : " + code);
return code;
}
public void jjtClose () {
//if (DEBUG)
// System.out.println ("IDLElement.jjtClose ()");
for (int i=0; i<jjtGetNumChildren (); i++) {
addMember (jjtGetChild (i));
}
for (int i=0; i<getMembers ().size (); i++) {
((IDLElement)getMember (i)).setParent (this);
}
}
public void xDump (String s) {
//System.out.println ("dump: " + members);
for (int i=0; i<members.size (); i++) {
System.out.println (s + members.elementAt (i));
((IDLElement)members.elementAt (i)).xDump (s + " ");
}
}
public static Node jjtCreate(int id) {
return new IDLElement (id);
}
public static Node jjtCreate(IDLParser p, int id) {
return new IDLElement (p, id);
}
}
/*
* <<Log>>
* 6 Gandalf 1.5 2/8/00 Karel Gardas
* 5 Gandalf 1.4 11/27/99 Patrik Knakal
* 4 Gandalf 1.3 11/4/99 Karel Gardas - update from CVS
* 3 Gandalf 1.2 10/23/99 Ian Formanek NO SEMANTIC CHANGE - Sun
* Microsystems Copyright in File Comment
* 2 Gandalf 1.1 10/5/99 Karel Gardas
* 1 Gandalf 1.0 8/3/99 Karel Gardas initial revision
* $
*/